home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1996 March
/
EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso
/
docs
/
corsoguide
/
librerie-12.txt
< prev
next >
Wrap
Text File
|
1996-02-22
|
2KB
|
39 lines
Le librerie (library)
Arriviamo ad uno degli argomenti più importanti di questa puntata (l'ultimo
di Exec) che permetterà di aprire gli altri più concreti.
In "introduzione alle librerie", avevamo già accennato che cosa è una
libreria e avevamo detto che un insieme di funzioni che permettono
all'utente di pilotare correttamente il sistema in tutte le sue parti,
dall'apertura di un file a quella di uno schermo. La libreria è composta da
una struttura comprendente le informazioni di quest'ultima e una tabella di
salti per le funzioni vere e proprie; la libreria, per poter utilizzare le
sue funzioni, deve essere aperta mediante la chiamata:
libreria = (struct Library *)OpenLibrary(nome,versione);
dove "libreria" è il puntatore alla struttura Library della libreria e viene
utilizzata per ogni chiamata a sue funzioni; "nome" è il puntatore ad una
stringa contenente il nome della libreria e "versione" è una long che indica
la versione della libreria (che corrisponde a quella del sistema esempio 32,
33, 36 ecc.).
Qui occorre ricordare la famosa regola di Amiga: "quello che viene aperto
deve essere chiuso"; per cui eccovi la funzione per chiudere la libreria
prima dell'uscita dal vostro programma:
CloseLibrary(libreria);
dove libreria è il puntatore alla struttura Library ritornato da
OpenLibrary.
Il valore "libreria" non verrà mai utilizzato se non nella chiusura, perché
nella chiamata alle funzioni di libreria, i parametri vengono passati per
registri, mentre in una qualsiasi chiamata ad una funzione da C i parametri
sono passati per stack; in realtà quindi, vengono chiamate delle funzioni
presenti nella libreria del compilatore (solitamente Amiga.lib) che a loro
volta passeranno i parametri dallo stack nei registri oppurtuni e qui
chiameranno la funzione vera e propria mediante il puntatore "libreria";
perciò i puntatori alle strutture Library delle librerie da utilizzare
vanno dichiarati dal programmatori come variabili esterne (o globali) con
un nome ben preciso che non può essere mutato e che potete osservare nella
tabella rispettiva.